/**
 * 
 */
package cn.edu.hstc.bean.utils;

import java.io.IOException;
import java.io.InputStream;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

/**
 * @Description Document 帮助类工具
 * @author act262
 * @version 1.0
 * @since 2014-4-26 下午8:15:35
 * 
 */
public class DocumentUtils {

	/**
	 * 取得连接制定URL后返回的Document对象,自定义超时时间
	 * 
	 * @param url
	 *            连接的URL
	 * @param timeout
	 *            自定义的超时时间
	 * @return 连接成功的Document对象
	 * @throws IOException
	 *             连接失败/超时 抛出异常
	 */
	public static Document getWebDocument(String url, int timeout) throws IOException {
		return Jsoup.connect(url).timeout(timeout).get();
	}

	/**
	 * 取得连接制定URL后返回的Document对象,默认超时时间3s
	 * 
	 * @param url
	 *            连接的URL
	 * @return 连接成功的Document对象
	 * @throws IOException
	 *             连接失败/超时 抛出异常
	 */
	public static Document getWebDocument(String url) throws IOException {
		// 使用默认的3S超时
		return getWebDocument(url, 3 * 1000);
	}

	/**
	 * 获取首页的Document对象,自定义超时时间
	 * 
	 * @param url
	 *            首页URL
	 * @param timeout
	 *            超时时间
	 * @return 成功返回首页的 Document
	 * @throws IOException
	 */
	public static Document getIndexDocument(String url, int timeout) throws IOException {
		return getWebDocument(url, timeout);
	}

	/**
	 * 获取首页的Document对象,默认超时时间3s
	 * 
	 * @param url
	 *            首页URL
	 * @return 成功返回首页的 Document
	 * @throws IOException
	 */
	public static Document getIndexDocument(String url) throws IOException {
		return getWebDocument(url);
	}

	/**
	 * 根据输入内容返回一个Document对象
	 * 
	 * @param content
	 * @return
	 */
	public static Document getDocument(String content) {
		return Jsoup.parse(content);
	}

	/**
	 * 根据输入流内容返回一个Document对象
	 * 
	 * @param stream
	 *            输入流
	 * @param charsetName
	 *            指定字符
	 * @param baseUri
	 *            基础Uri地址
	 * @return
	 */
	public static Document getDocument(InputStream stream, String charsetName, String baseUri) {
		try {
			return Jsoup.parse(stream, charsetName, baseUri);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

}
